数据流图、数据字典 |
您所在的位置:网站首页 › 数据字典用来定义( )中的各个数据元素的具体含义 › 数据流图、数据字典 |
文章目录 数据流图数据流图的基本图形元素数据流图的扩充符号数据流图的层次结构分层数据流图的画法分层数据流图的审查数据流图平衡原则父图与子图之间的平衡子图内平衡 数据字典数据字典的内容数据词典管理加工逻辑的描述 答题技巧题目示例题目解题 数据流图 数据流图也称为数据流程图(Data Flow Diagram,DFD),它是一种便于用户理解、分析系统数据流程的图形工具。它摆脱了系统的物理内容,精确地在逻辑上描述系统的功能、输入、输出和数据存储等,是系统逻辑模型的重要组成部分。 数据流图的基本图形元素 数据流图中的基本图形元素包括数据流(Data Flow)、加工(Process)、数据存储(Data Store)和外部实体(External Agent)。其中,数据流、加工和数据存储用于构建软件系统内的数据处理模型:外部实体表示存在于系统之外的对象,用来帮助用户理解系统数据的来源和去向。DFD 的基本图形元素如下图所示。 2)加工 加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过什么处理后变成了输出数据流。每个加工都有一个名字和编号。编号能反映出该加工位于分层 DFD 中的哪个层次和哪张图中,也能够看出它是哪个加工分解出来的子加工。 一个加工可以有多个输入数据流和多个输出数据流,但至少有一个输入数据流和一个输出数据流。数据流图中常见的 3 种错误如下图所示。 3)数据存储 数据存储用来存储数据。通常,一个流入加工的数据流经过加工处理后就消失了,而它的某些数据(或全部数据)可能被加工成输出数据流,流向其他加工或外部实体。除此之外,在软件系统中还常常要把某些信息保存下来以供以后使用,这时可以使用数据存储。例如,在考务处理系统中,报名时产生的考生名册要随着报名的过程不断补充,在统计成绩和制作考生通知书时还要使用考生名册的相关信息。因此,考生名册可以作为数据存储存在,以保证相关的考生信息。 每个数据存储都有一个定义明确的名字标识。可以有数据流入数据存储,表示数据的写入操作;也可以有数据流从数据存储流出,表示数据的读操作;还可以用双向箭头的数据流指向数据存储,表示对数据的修改。 这里要说明的是,DFD 中的数据存储在具体实现时可以用文件系统实现,也可以用数据库系统实现。数据存储的存储介质可以是磁盘、磁带或其他存储介质。 4)外部实体(外部主体) 外部实体是指存在于软件系统之外的人员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。例如,对于一个考务处理系统而言,考生向系统提供报名单(输入数据流),所以考生是考务处理系统的一个源;而考务处理系统要将考生成绩的统计分析表(输出数据流)传递给考试中心,所以考试中心是该系统的一个宿。 在许多系统中,某个源和某个宿可以是同一个人员或组织,此时,在 DFD 中可以用同一个符合表示。考生向系统提供报名单,而系统向考生送出准考证,所以在考务处理系统中,考生既是源又是宿。 源和宿采用相同的图形符合表示,当数据流从该符合流出时,表示它是源:当数据流流向该符号时,表示它是宿:当两者皆有时,表示它既是源又是宿。
数据流图的扩充符号 在 DFD 中,一个加工可以有多个输入数据流和多个输出数据流,此时可以加上一些扩充符号来描述多个数据流之间的关系。 1)星号(*) 星号表示数据流之间存在“与”关系。如果是输入流则表示所有输入数据流全部到达后才能进行加工处理:如果输出流则表示加工结束将同时产生所有的输出数据流。 2)加号(+) 加号表示数据流之间存在“或”关系。如果是输入流则表示其中任何一个输入流到达后就能进行加工处理;如果是输入流则表示加工处理的结果是至少产生其中一个输出数据流。 3)异或(⊕) 异或表示数据流之间存在“互斥”关系。如果是输入流则表示当且仅当其中一个输入流到达后才能进行加工处理;如果是输出流则表示加工处理的结果是仅产生这些输出数据流中的一个。
数据流图的层次结构 从原理上讲,只要纸足够大,一个软件系统的分析模型就可以画在一张纸上。然而,一个复杂的软件系统可能涉及上百个加工和上百个数据流,甚至更多。如果将它们画在一张图上,则会十分复杂,不易阅读,也不易理解。 根据自顶向下逐层分解的思想,可以将数据流图按照层次结构来绘制,每张图中的加工个数可大致控制在“7 加减 2”的范围内,从而构成一套分层数据流图。 1)层次结构 分层数据流图的顶层只有一张图,其中只有一个加工,代表整个软件系统,该加工描述了软件系统与外界之间的数据流,称为顶层图。 顶层图中的加工(即系统)经分解后的图称为 0 层图,也只有一张。处于分层数据流图最底层的图称为底层图,在底层图中,所有的加工不再进行分解。分层数据流图中的其他图称为中间层,其中至少有一个加工(也可以是所有加工)被分解成一张子图。在整套分层数据流图中,凡是不再分解成子图的加工称为基本加工。 2)图和加工的编号 首先介绍父图和子图的概念。 如果某图((记为 A)中的某一个加工分解成一张子图(记为 B),则称 A 是 B 的父图,B 是 A 的子图。若父图中有 n 个加工,则它可以有 0~n 张子图,但每张子图只对应一张父图。 为了方便对图进行管理和查找,可以采用下列方式对 DFD 中的图和加工编号。 ① 顶层图中只有一个加工(代表整个软件系统),该加工不必编号。 ② 0 层图中的加工编号分别为1、2、3……。 ③ 子图号就是父图中被分解的加工号。 ④ 对于子图中加工的编号,若父图中的加工号为 x 的加工分解成某一子图,则该子图中的加工编号分别为 x.1、x.2、x.3……。
分层数据流图的画法 下面以某考务处理系统为例介绍分层数据流图的画法。 考务处理系统的功能需求如下。 ① 对考生送来的报名单进行检查。 ② 对合同的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站。 ③ 对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者。 ④ 制作考生通知单(内含成绩合格/不合格标志)送给考生。 ⑤ 按地区、年龄、文化程度、职业和考试级别等进行成绩分类统计和试题难度分析,产生统计分析表。 部分数据流的组成如下。 报名单 = 地区 + 序号 + 姓名 + 文化程度 + 职业 + 考试级别 + 通讯地址 正式报名单 = 准考证号 + 报名单 准考证 = 地区 + 序号 + 姓名 + 准考证号 + 考试级别 + 考场 考试名单 = {准考证号 + 考试级别}(其中,{w}表示 w 重复多次) 考生名册 = 正式报名单 统计分析表 = 分类统计表 + 难度分析表 考生通知单 = 准考证号 + 姓名 + 通讯地址 + 考试级别 + 考试成绩 + 合格标志 下面介绍画分层数据流图的步骤。 1)画系统的输入和输出 系统的输入和输出用顶层图来描述,即描述系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体。 顶层图只有一个加工,即待开发的软件系统。顶层图中的数据流就是系统的输入/输出信息。顶层图中通常没有数据存储。考务处理系统的顶层入下图所示。 (2)确定数据流。当用户把若干个数据看作一个整体来处理(这些数据一起到达,一起加工)时,可以把这些数据看成一个数据流。通常,实际工作环境中的表单就是一种数据流。 在父图中某加工分解而成的子图中,父图中相应加工的输入/输出数据流就是子图边界上的输入/输出数据流。另外,在分解后的子加工之间应增添一些新的数据流,这些数据流是加工过程中的中间数据(对某子加工输入数据流的改变),它们与所有的子加工一起完成了父图中相应加工的输入数据流到输出数据流的变换。如果某些中间数据需要保存,以备使用,那么可以表示为流向数据存储的数据流。 同一个源或加工可以有多个数据流流向另一个加工,如果它们不是一起到达和一起加工的,那么可以将它们分成多个数据流。同样,同一个加工也可以有多个数据流流向另一个加工或宿。 (3)确定数据存储。在由父图中某加工分解而成的子图中,如果父图中该加工存在流向数据存储的数据流(写操作),或者存在从数据存储流向该加工的数据流(读操作),则这种数据存储和相关的数据流都画在子图中。 在分解的子图中,如果需要保存某些中间数据,以备以后使用,那么可以将这些数据组成一个新的文件。在自顶向下画分层数据流图时,新数据存储(首次出现的)至少应有一个加工为其写入记录,同时至少存在另一个加工读取该数据存储的记录。 注意,对于从父图中继承下来的数据存储,在子图中可能只对其读记录,或者写记录。 (4)确定源和宿。通常在0层图和其他子图中不必画出源和宿,有时为了提供可读性,可以将顶层图中的源和宿画在0层图中。 当同一个外部实体(人或组织)既是系统的源,又是系统的宿时,可以用同一个图形符号来表示。为了画图的方便,避免图中线的交叉,同一个源或宿可以重复画在DFD的不同位置,以增加可读性,但它们仍代表同一个实体。 在考务处理系统的0层图中,采用功能分解方法来确定加工。分析系统的需求说明,可知系统的功能主要分为考试报名及统计成绩两大部分,其中,报名工作在考试前进行,统计成绩工作在考试后进行。 为此,定义两个加工:登记报名表和统计成绩。0层图中的数据流,除了继承顶层图中的输入/输出数据流外,还应定义这两个加工之间的数据流。由于这两个加工分别在考试前后进行,并不存在直接关系,因此,“登记报名表”所产生的结果“考生名册”应作为数据存储,以便考试后由“统计成绩”读取。考务处理系统的 0 层图如上图所示。 3)画加工的内部 当DFD中存在某个比较复杂的加工时,可以将它分解成一张 DFD 子图。分解的方法是将该加工看作一个小系统,该加工的输入/输出数据流就是这个假设的小系统的输入/输出数据流,然后采用画 0 层图的方法画出该加工的子图。 下面介绍考务处理系统 0 层图中加工 1 的分解,这里根据业务处理流程来确定加工1的分解。分析考务处理系统的功能需求和 0 层图,将加工 1 分解成 3 个子加工:检查报名表、编准考证号和登记考生。加工 1 分解而成的子图如下图所示。
分层数据流图的审查 在分层数据流图画好后,应该认真检查图中是否存在错误或不合理(不理想)的部分。 1)分层数据流图的一致性和完整性 分层数据流图的一致性是指分层DFD中不存在矛盾和冲突。这里讲的完整性是指分层DFD本身的完整性,即是否有遗漏的数据流、加工等元素。所以,分层 DFD 的一致性和完整性实际上反映了图本身的正确性。但是图本身的正确性并不意味着分析模型的正确性,分析模型的正确性要根据模型是否满足用户的需求来判断。 (1)分层数据流图的一致性。 ① 父图与子图的平衡。父图与子图平衡是指任何一张 DFD子图边界上的输入/输出数据流必须与其父图中对应加工的输入/输出数据流保持一致。 由于一张子图是被分解的加工的一种细化,所以,这张子图应该保证可以画到父图中替代被分解的加工,因此保持父图与子图平衡是理所当然的。 例如,下图所示的父图与子图是不平衡的。下图(b)是父图中加工 2 的子图,加工 2 的输入数据流有 M 和 N,输出数据流是 T,而子图边界上的输入数据流是 N,输出数据流是 S 和 T,很显然它们是不一致的。 2)构造分层 DFD时需要注意的问题 (1)适当命名。DFD中的每个数据流、加工、数据存储、外部实体都应被适当地命名,名字应符合被命名对象的实际含义。通常,数据流名可用名词或形容词加名词来描述;加工名可以用动词或及物动词加宾语来描述;数据存储名可以用名词来描述;外部实体可以用实际的人员身份或组织的名称来命名。 用户在命名时应注意以下问题。 ① 名字应反映整个对象(如数据流、加工),而不是只反映它的某一部分。 ② 避免使用空洞的、含义不清的名字,如“数据”“信息”“处理”“统计”等。 ③ 如果发现某个数据流或加工难以命名,往往是DFD分解不当的征兆,此时应考虑重新分解。 (2)画数据流而不是控制流。数据流图强调的是数据流,而不是控制流。在 DFD中一般不能明显地看出其执行的次序。为了区分数据流和控制流,可以简单地回答下列问题:“这条线上是否有数据流过?”,如果有表示是数据流,否则是控制流。 (3)避免一个加工有过多的数据流。当一个加工有过多的数据流时,意味着这个加工特别复杂,这往往是分解不合理的表现。解决的办法是重新分解,步骤如下。 ① 把需要重新分解的某张图的所有子图连接成一张图。 ② 把连接后的图重新划分成几个部分,使各部分之间的联系最小。③重新定义父图,即 第②步中的每个部分作为父图中的一个加工。④重新建立各子图,即第②步中的每个部分都是一张子图。 为所有的加工重新命名并编号。 (4)分解尽可能均匀。理想的分解是将一个问题(加工)分解成大小均匀的若干个子问题(子加工),也就是说,对于任何一张DFD,其中的任何两个加工的分解层数之差不超过1。如果在同一张图中,某些加工已是基本加工,而另一些加工仍需分解若干层,那么,这张图就是分解不均匀的。 (5)先考虑确定状态,忽略琐碎的细节。在构造 DFD 时,应集中精力先考虑稳定状态下的各种问题,暂时不考虑系统如何自动、如何结束、出错处理以及性能等问题,这些问题可以在分析阶段的后期,在需求规约中加以说明。 (6)随时准备重画。对于一个复杂的软件系统,其分层 DFD 很难一次开发成功,往往要经历反复多次的重画和修改,才能构造出完整、合理、满足用户需求的分层 DFD。 3)分解的程度 在自顶向下画数据流图时,为了便于对分解层数进行把握,可以参照以下几条与分解有关的原则。 (1)7 加减 2。 (2)分解应自然,概念上应合理、清晰。 (3)只要不影响 DFD 的易理解性,可适当增加子加工数量,以减少层数。 (4)一般来说,上层分解得快一些(即多分解几个加工),下层分解得慢一些(即少分解几个加工)。 (5)分解要均匀。 数据流图平衡原则 父图与子图之间的平衡子图内平衡 父图与子图之间的平衡
子图内平衡
数据字典 数据流图描述了系统的分解,但没有对图中各成分进行说明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出说明。其中,对加工的描述称为“小说明”,也可以称为“加工逻辑说明”。 数据字典的内容 数据字典有以下 4 类条目:数据流、数据项、数据存储和基本加工。数据项是组成数据流和数据存储的最小元素。源点、终点不在系统之内,故一般不在字典中说明。 (1)数据流条目。数据流条目给出了DFD中数据流的定义,通常列出该数据流的各组成数据项。在定义数据流或数据存储组成时,使用下表给出的符号。 符号含义举例及说明=被定义为+与x = a + b,表示 x 由 a 和 b 组成[…|…]或x = [a|b],表示 x 由 a 或 b 组成{…}重复x = {a},表示 x 由 0 个或多个 a 组成m{…}n 或 {…}nm重复x = 2{a}5 或 x = {a}52,表示 x 中最少出现 2 次 a,最多出现 5 次 a。5、2 为重复出现的上、下限(…)可选x = (a) 表示 a 可在 x 中出现,也可不出现“…”基本数据元素x = “a”,表示 x 是取值为字符 a 的数据元素. .连接符x = 1. .9,表示 x 可取 1~9 中的任意值(2)数据存储条目。数据存储条目是对数据存储的定义。 (3)数据项条目。数据项条目是不可再分解的数据单位。 (4)基本加工条目。加工条目是用来说明 DFD 中基本加工的处理逻辑的,由于下层的基本加工是由上层的加工分解而来,只要有了基本加工的说明,就可理解其他加工。
数据词典管理 词典管理主要是把词典条目按照某种格式组织后存储在词典中,并提供排序、查找和统计等功能。如果数据流条目包括了来源和去向,文件条目包含了读文件和写文件,还可以检查数据字典与数据流图的一致性。
加工逻辑的描述 加工逻辑也称为“小说明”。常用的加工逻辑描述方法有结构化语言、判定表和判定树 3 种。 1)结构化语言 结构化语言(如结构化英语)是一种介于自然语言和形式化语言之间的半形式化语言,是自然语言的一个受限子集。 结构化语言没有严格的语法,它的结构通常可分为内层和外层。外层有严格的语法,内层的语法比较灵活,可以接近于自然语言的描述。 (1)外层。用来描述控制结构,采用顺序、选择和重复 3 种基本结构。 ① 顺序结构。一组祈使语句、选择语言、重复语句的顺序排列。祈使语句是指至少包含一个动词及一个名词,指出要执行的动作及接受动作的对象。 ② 选择结构。一般用 IF-THEN-ELSE-ENDIF、CASE-OF-ENDCASE 等关键词。 ③ 重复结构。一般用 DO-WHILE-ENDDO、REPEAT-UNTIL 等关键词。 (2)内层。一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其动词含义要具体,尽量不用形容词和副词来修饰,还可使用一些简单的算法运算和逻辑运算符号。 2)判定表 在有些情况下,数据流图中某个加工的一组动作依赖于多个逻辑条件的取值。这时,用自然语言或结构化语言都不易于清楚地描述出来,而用判定表能够清楚地表示复杂的条件组合与应做的动作之间的对应关系。 判定表由 4 个部分组成,用双线分割成 4 个区域,如下图所示。 3)判定树 判定树是判定表的变形,一般情况下它比判定表更直观,且易于理解和使用。
答题技巧 详细分析试题说明利用数据平衡原则 详细分析试题说明 数据管理员可通过中间件进行用户管理、操作管理和权限管理。用户管理维护用户信息,用户信息(用户名、密码)存储在用户表中;操作管理维护数据实体的标准操作及其所属的后端数据库信息,标准操作和后端数据库信息存放在操作表中;权限管理维护权限表,该表存储用户可执行的操作信息。 (1)数据管理员是一个外部实体; (2)中间件中有“用户管理”、“操作管理”、“权限管理”这些加工; (3)中间件中有“用户表”这个数据存储,且该存储与“用户管理”相关;后端数据库是一个外部实体; (4)中间件中有“操作表”这个数据存储,且该存储与“操作管理”相关; (5)中间件中有“权限表”这个数据存储,且该存储与“权限管理”相关。 利用数据平衡原则 一、补充实体实体可能是: (1)人物角色:如客户、管理员、主管、经理、老师、学生 (2)组织机构:如银行、供应商、慕捐机构 (3)外部系统:如银行系统、工资系统、后台数据库(当要开发的是中间件时) 二、补充存储 存储的文字方面特征:“ **文件 ”“ **表 ”“ **库 ”“ **清单 ”“ **档案 ” 三、补充数据流 1、数据平衡原则 (1)顶层图与0层图对比,是否有顶层图有,但0层图无的数据流,或反之。 (2)检查图中每个加工,是否存在只有入没有出,或只有出没有入,或根据输入的数据无法产生对应的输出的情况。 2、按题目说明与图进行匹配 说明中的每一句话,都能与图中有对应关系,当把说明中的实体与数据流标识出来之后,容易缩小对应范围,找出纰漏。 四、补充加工名 加工是用于处理数据流的,所以要补充加工名,可以把该加工涉及到的数据流,在说明中标识出来,再在数据流名称所在的句子中,找“动词+名词”的结构,分析是否可作为加工。 “动词+名词”如:生成报告,发出通知,批改作业,记录分数,当然这只是普遍情况,也有例外,如物流跟踪、用户管理
题目示例 题目 阅读下列说明和图,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 某医院欲开发病人监控系统。该系统通过各种设备监控病人的生命体征,并在生命体征异常时向医生和护理人员报警。该系统的主要功能如下: (1)本地监控:定期获取病人的生命体征,如体温、血压、心率等数据。 (2)格式化生命体征:对病人的各项重要生命体征数据进行格式化,然后存入日志文件并检查生命体征。 (3)检查生命体征:将格式化后的生命体征与生命体征范围文件中预设的正常范围进行比较。如果超出了预设范围,系统就发送一条警告信息给医生和护理人员。 (4)维护生命体征范围:医生在必要时(如,新的研究结果出现时)添加或更新生命体征值的正常范围。 (5)提取报告:在医生或护理人员请求病人生命体征报告时,从日志文件中获取病人生命体征生成体征报告,并返回给请求者。 (6)生成病历:根据日志文件中的生命体征,医生对病人的病情进行描述,形成病历存入病历文件。 (7)查询病历:根据医生的病历查询请求,查询病历文件,给医生返回病历报告。 (8)生成治疗意见:根据日志文件中的生命体征和病历,医生给出治疗意见,如处方等,并存入治疗意见文件。 (9)查询治疗意见:医生和护理人员查询治疗意见,据此对病人进行治疗。 现采用结构化方法对病人监控系统进行分析与设计,获得如下图所示的顶层数据流图和下图所示的0层数据流图。 解题 【参考答案】 【问题1】(3分,各1分) E1:病人 E2:护理人员 E3:医生 【问题2】(4分,各1分). D1:生命体征范围文件 D2:日志文件 D3:病历文件 D4:治疗意见文件 【问题3】(6分) 注:上表中各行次序无关,但每行的数据流名称(…表示不计分)、起点、终点必须相对应 数据流名称起点终点重要生命体征本地监控格式化生命体征格式化后的生命体征格式化生命体征检查生命特征病例生成病例D3或病例(文件)生命体征D2或日志(文件)生成病例【问题4】(2分) E1和E3之间不可以有数据流,因为数据流的起点和终点中必须有一个是加工(处理)。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |